package com.hxk.controller;

import java.util.List;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;

import com.hxk.pojo.Demo;
import com.hxk.pojo.User;
/**
 * spring获取客户端请求参数
 * @author Cactus
 *
 */
@Controller
public class RequestParamController {

	/**
	 * 最原始的获取请求参数
	 * @param req
	 * @param resp
	 * @return
	 */
	@RequestMapping("requp1")
	public String requp1(HttpServletRequest req, HttpServletResponse resp){
		String username = req.getParameter("username");
		String password = req.getParameter("password");
		System.out.println("最原始的获取请求参数"+username+","+password);
		return "home";
	}
	/**
	 * 基本数据类型参数
		默认保证参数名称和请求中传递的参数名相同
	 * @param userName
	 * @param password
	 * @return
	 */
	@RequestMapping("requp2")
	public String requp2(String username, String password){
		System.out.println("基本数据类型参数"+username+","+password);
		return "home";
	}
	/**
	 * 参数是对象类型
	 * @param user
	 * @return
	 */
	@RequestMapping("requp3")
	public String requp3(User user){
		System.out.println("参数是对象类型"+user);
		return "home";
	}
	/**
	 * 如果请求参数名和方法参数名不对应使用@RequestParam()赋值
	 * @param username
	 * @param password
	 * @return
	 */
	@RequestMapping("requp4")
	public String requp4(@RequestParam("username1") String username, String password){
		System.out.println("如果请求参数名和方法参数名不对应"+username+","+password);
		return "home";
	}
	/**
	 * 如果方法参数是基本数据类型(不是封装类)
	 * 可以通过@RequestParam(defaultValue="hxk")设置默认值,防止没有参数时 500,
	 * 可以通过@RequestParam(required=true)强制要求必须有某个参数
	 * @param username
	 * @param password
	 * @return
	 */
	@RequestMapping("requp5")
	public String requp5(@RequestParam(defaultValue="hxk") String username, @RequestParam(required=true) String password){
		System.out.println("如果请求参数设置默认值和必填"+username+","+password);
		return "home";
	}
	
	/**
	 * 请求参数中包含多个同名参数的获取方式
	 * @param list
	 * @return
	 */
	@RequestMapping("requp6")
	public String requp6(String username, int age, @RequestParam("hover") List<String> list){
		System.out.println("如果请求参数设置默认值和必填"+username+","+age+","+list);
		return "home";
	}
	/**
	 * 请求参数中对象.属性格式
	 * @return
	 */
	@RequestMapping("requp7")
	public String requp7(Demo demo){
		System.out.println("请求参数为对象依赖格式"+demo);
		return "home";
	}
	/**
	 * 请求参数中传递集合对象类型参数
	 * @param peos
	 * @return
	 */
	@RequestMapping("requp8")
	public String requp8(Demo demo){
		System.out.println("请求参数为对象依赖格式"+demo);
		return "home";
	}
	/**
	 * restful 传值方式
	 * @param id
	 * @param name
	 * @return
	 */
	@RequestMapping("requp9/{id}/{name1}")
	public String requp9(@PathVariable int id, @PathVariable("name1") String name){
		System.out.println("restful 传值方式"+id+","+name);
		return "home";
	}
	
}
